home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / tcqbsnip.zip / BATINP.BAS < prev    next >
BASIC Source File  |  1997-06-20  |  2KB  |  103 lines

  1. ' BATINP.BAS
  2. ' by Tika Carr
  3. '
  4. ' Donated to the public domain
  5. ' No warranties or guarantees are expressed or implied.
  6. '
  7. 'Based on ENVIRON.BAS posted by Jack Hudgions to the QUIK_BAS Echo
  8. '
  9. 'Requires: QB.QLB, QB.LIB and QB.BI for QuickBasic 4.5 or
  10. '          QBX.QLB, QBX.LIB and QBX.BI for PDS/Basic7
  11. '          (Start QuickBasic with: QB /L QB.QLB)
  12. 'Credits:
  13. '    Douglas Lusher, Fidonet QuickBASIC, 07-11-94
  14. '    Jack Hudgions, Fidonet QuickBASIC, 12/1996
  15. '
  16. '------- Demo Batch File Example: -------
  17. '
  18. '@echo off
  19. 'rem First we must set up the environment to accept a certain amount of
  20. 'rem characters expected. Here we expect maybe up to 20 characters for
  21. 'rem a name.
  22. 'SET BINP=x
  23. '
  24. 'echo Please type your name.
  25. '
  26. 'rem The next line lets you input characters into that environment
  27. 'rem variable we just set.
  28. 'INPUT BINP
  29. '
  30. 'echo Hello, %BINP%
  31. '
  32. 'rem The next line clears the variable out of the environment table.
  33. 'SET BINP=
  34. '
  35. '------- END BATCH --------
  36.  
  37. DEFINT A-Z
  38.  
  39. '$INCLUDE: 'qb.bi'
  40. DIM RegsX AS RegTypeX
  41. RegsX.ax = &H352E
  42. NULL$ = CHR$(0)
  43.  
  44. LINE INPUT a$
  45. Env$ = COMMAND$ + "=" + a$
  46. EqualPtr% = INSTR(Env$, "=")
  47.  
  48. IF LEN(Env$) = 0 OR INSTR(Env$, NULL$) OR EqualPtr% <= 1 THEN END
  49. EVar$ = UCASE$(LEFT$(Env$, EqualPtr%))
  50. EnvVal$ = MID$(Env$, EqualPtr% + 1)
  51.  
  52. INTERRUPTX &H21, RegsX, RegsX
  53.  
  54. DEF SEG = RegsX.es
  55. EnvSeg& = PEEK(&H2C) + PEEK(&H2D) * 256&
  56. DEF SEG = EnvSeg& - 1
  57. EnvSize% = (PEEK(3) + PEEK(4) * 256) * 16
  58. DEF SEG
  59.  
  60. Tmp$ = SPACE$(EnvSize%)
  61. DEF SEG = EnvSeg&
  62. FOR EqualPtr% = 1 TO LEN(Tmp$)
  63.   MID$(Tmp$, EqualPtr%, 1) = CHR$(PEEK(EqualPtr% - 1))
  64. NEXT
  65. DEF SEG
  66. Tmp$ = LEFT$(Tmp$, INSTR(Tmp$, NULL$ + NULL$))
  67.  
  68. IF LEN(Tmp$) = 1 THEN Tmp$ = ""
  69.  
  70. 'Mark's modification begin.
  71. EnvVarPtr% = INSTR(Tmp$, NULL$ + EVar$) + 1
  72. IF EnvVarPtr% = 0 THEN
  73.   EnvVarPtr% = INSTR(Tmp$, EVar$)
  74.   IF EnvVarPtr% > 1 THEN EnvVarPtr% = 0
  75. END IF
  76. ' Mark's modification end.
  77.  
  78. IF EnvVarPtr% THEN
  79.   NextPtr% = INSTR(EnvVarPtr%, Tmp$, NULL$) + 1
  80.   IF NextPtr% > LEN(Tmp$) THEN
  81.     Tmp$ = LEFT$(Tmp$, EnvVarPtr% - 1)
  82.   ELSE
  83.     Tmp$ = LEFT$(Tmp$, EnvVarPtr% - 1) + MID$(Tmp$, NextPtr%)
  84.   END IF
  85. END IF
  86.  
  87. IF LEN(EnvVal$) THEN
  88.   Tmp$ = Tmp$ + EVar$ + EnvVal$ + NULL$ + NULL$
  89.   IF LEN(Tmp$) > EnvSize% THEN END
  90. ELSE
  91.   Tmp$ = Tmp$ + NULL$
  92.   IF LEN(Tmp$) = 1 THEN
  93.      Tmp$ = Tmp$ + NULL$
  94.   END IF
  95. END IF
  96.  
  97. DEF SEG = EnvSeg&
  98. FOR Ptr% = 1 TO LEN(Tmp$)
  99.   POKE Ptr% - 1, ASC(MID$(Tmp$, Ptr%, 1))
  100. NEXT
  101. DEF SEG
  102.  
  103.